Docker-compose 커맨드
version : docker compose 버전(3, 3.9 이렇게 씀)
-> 원래 최상단에 쓰이던 건데 이제 필요 없다고 함! (docker 2.25 이상부터)
services: 서비스를 Docker Engine으로 불러오는데, 관리 명칭을 jenkins로 함
container name : 컨테이너 네임
image : 이미지 사용할 거
user : 작성 안 하면 디폴트는 jenkins로 잡힘. jenkins는 mkdir 권한이 있는 계정으로 설정해줘야 함. "${UID} : ${GID}" workspace에서 빌드를 할 때 mkdir 을 해서 jar 파일을 만들 수 있어야 하는데 root 권한이 없으면 mkdir 을 못해서 파일을 못 만든다. 그렇기 때문에 user를 mkdir 권한이 있는 계정으로 줘야 한다!
restart : 재시작 조건
ports : 외부 리눅스 방화벽에 공유할 포트 : 내부 포트 (방화벽 열려 있어야 연결 되나?)
volumes : container 내부 파일 외부 공유 설정 ex) jenkins_home : /home/ubuntu/jenkins -> 리눅스 디렉토리 마운트가 일어남. jenkins_home 디렉토리 내용이 /home/ubuntu/jenkins 에 그대로 들어감
-> 남발하면 보안상 좋지 않다. 환경변수나 특정 파일들을 넣어주고 마운트해서 적용할 수 있음
networks : 도커 네트워크를 쓰겠다고 명시
external : 앞어 networks 를 쓴다고 했으면 external : true 라고 했을 때 기존에 만든 dockernetwork를 그대로 쓴다는 의미 .만약 false 가 되면 네트워크가 하나 만들어짐
Depth | Command | 의미 설명 |
---|---|---|
0 | version: ‘3’ | Docker-compose 3으로 만들어진 문서라는 의미, version: ‘3.9’ 등으로 사용 가능. |
0 | services: | 이하 Service ‘목록’이 나올 것임을 명시 |
2 | jenkins | Service를 Docker Engine으로 불러오는데, 관리명칭을 ‘Jenkins’로 함 |
4 | build | ‘Jenkins’ Service의 build 조건임을 명시 |
4 | container_name | Depth 2의 ‘Jenkins’를 실제 Docker Engine에서 관리하기 위한 이름을 명시 |
4 | image | Docker Hub에서 가져올 이미지 이름 |
4 | user | Service에서 사용할 계정정보 |
4 | restart | Docker Container 재시작 조건 |
4 | ports | 외부 리눅스 방화벽에 공유할 Port와 Docker Container 내부 Port번호 명시 |
4 | environment | Docker Container에서 사용하는 환경변수임을 명시 |
4 | volumes | 외부 리눅스 디렉토리에 Docker Container 내부의 디렉토리를 공유함을 명시 |
4 | networks | Docker Network 관련 정보임을 명시 |
4 | network_param | Depth 4 network에서 사용할 network의 이름을 작성하며, -로 시작함 |
4 | external | Docker network에서 미리 만들어 놓은 Bridge를 재사용한다는 의미(같은 네트워크 대역을 쓴다는 선언) |
Docker 네트워크
백엔드에서 db로 접근할 때 도메인:3306으로 mysql 가려면 nginx 거쳐서 방화벽 열려 있는 3306으로 들어가서 mysql로 가야했음
도커 네트워크를 사용하면 EC2 내부에서 이동할 수 있다! -> 보안적으로 유리하고 안정적임
적극적으로 써라~
같은 네트워크 대역대를 쓴다는 선언이다